Structured coauthoring

ABSTRACT

A system is presented for structured coauthoring of a document, the system comprising a server. The server includes one or more documents organized into sections, a document permissions module that stores user access permissions for each section of a document, a document update processing module that processes requests from a user to share document updates with other users and that processes requests from a user to receive document updates from other users and a document rendering module that renders a document for display on a client so that sections of the document are updated with shared document updates made by users. The user access permissions determine the extent to which a user can modify each section of the document.

CROSS REFERENCE TO RELATED APPLICATIONS

The present application is a continuation of U.S. patent applicationSer. No. 12/145,536, filed Jun. 25, 2008, now U.S. Pat. No. 8,417,666entitled Structured Coauthoring, which are assigned to the assignee ofthe present application, and hereby incorporated by reference.

BACKGROUND

In multi-user environments, it may be desirable for multiple users beable to edit the same document at the same time. Often, when multipleusers are editing the document, confusion can exist as to how thevarious edits are added to the document. For example, sometimes multipleversions of the document are edited, making it difficult to merge theedits into a single, complete document.

Even in systems that support multi-user editing of a document, userstypically cannot control when the users' edits are shown to othersediting the document. Further, it can be difficult to define which useris working on which particular part of the document, thereby resultingin possible conflicts in the changes made to the document.

SUMMARY

The present disclosure relates to systems and methods for structuredcoauthoring of a document.

According to one aspect, a system for structured coauthoring of adocument comprises a server including one or more documents, eachdocument being organized into sections, a document permissions modulethat stores user access permissions for each section of a document, adocument update processing module that processes requests from a user toshare document updates with other users and that processes requests froma user to receive document updates from other users and a documentrendering module that renders a document for display on a client, thedocument being rendered so that sections of the document are updatedwith shared document updates made by users, the shared document updatesbeing requested by the user on the client. The user access permissionsdetermine the extent to which a user can modify each section of thedocument, permitting different user access permissions to be stored forone or more sections of the document. The system permits two or moreusers to coauthor one or more of the sections of the document so thateach user has specific access rights to one or more of the sections ofthe document, so that the user can specify whether updates made by theuser to the one or more sections of the document can be displayed toother users, and so that the user can view the names of other usersaccessing the one or more sections of the document and can selectivelyobtain updates to the document from those users.

According to another aspect, a method for structured coauthoring of adocument comprises: opening a document on a client by a user, thedocument organized into sections, each section representing a part ofthe document, the document displaying user access permissions for one ormore sections of the document and the document displaying the names ofusers who are editing one or more of the sections of the document;performing operations on one or more sections of the document, theoperations being consistent with the user access permissions granted forthe one or more sections of the document; identifying updates to thedocument that can be shared with other users so that the updates to thedocument are shared with other users; and identifying one or more usersfrom which document updates to one or more of the sections of thedocument are to be obtained, the one or more users selected from thenames displayed on the document, so that the document updates areobtained from the document server and displayed in the appropriatesections of the document.

According to yet another aspect, a method for coordinating thestructured coauthoring of a document at a document server comprises:dividing a document into a plurality of sections, each of the sectionsincluding a paragraph of the document; storing user access permissionsto each of the sections of the document for a plurality of users of thedocument, the user access permissions defining an extent to which eachof the plurality of users can view, edit and comment on the sections ofthe document; storing the names of users who are accessing each of thesections of the document; rendering an instance of the document to theusers of the document, the rendered document including access controlsthat indicate user access permissions for each of the sections of thedocument, the rendered document including the names of the users who areediting each of the sections of the document, the rendered documentincluding action controls providing actions including requesting updatesto the sections from the users and designating that updates a user madeto the sections are made available to users; storing updates to thedocument made by the users of the document; receiving a request from afirst user to share updates to the document made by the first user withother users; in response to the request from the first user, enablingthe document updates made by the first user to be shared with otherusers; receiving a request from a second user to receive updates to thesections of the document made by other users; and in response to therequest from the second user, rendering an instance of the document forthe second user that includes the shared updates to the sectionsrequested by the second user, the shared updates being rendered in newdocument sections located directly above the requested documentsections.

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used to limit the scope of the claimed subject matter.

DESCRIPTION OF THE DRAWINGS

The accompanying drawings incorporated in and forming a part of thespecification illustrate several aspects of the present disclosure, andtogether with the description serve to explain the principles of thedisclosure.

FIG. 1 shows an example system for coauthoring documents.

FIG. 2 shows a structure of an example document used for coauthoring.

FIG. 3 shows a portion of an example document for coauthoring.

FIG. 4 shows an example of displaying document updates from another userfor a portion of the example document shown in FIG. 3.

FIG. 5 shows example modules of an example document server.

FIG. 6 shows a flowchart for an example method for coauthoring adocument.

FIG. 7 shows a flowchart for an example method for coordinating thecoauthoring of documents at a document server.

DETAILED DESCRIPTION

The present application is directed to systems and methods forstructured coauthoring of a document.

In examples described herein, a document is organized into sections, andusers are assigned specific access permissions to one or more sectionsof the document. The access permissions define the extent to which auser can view, edit, or comment on a section of the document. Structuredcoauthoring also permits users to share document updates. A user canmake changes to the document and decide which, if any, of these changesare shared with other users. In addition, a user can request to seeshared updates to the document made by one or more other users.

FIG. 1 shows an example system 100 that supports structured coauthoringof documents. The system 100 includes clients 101, 102 and one or moredocument servers 104. More or fewer clients and document servers can beused.

In example embodiments, the clients 101, 102 are computing devices, suchas desktop computers, laptop computers, personal data assistants, orcellular devices. The clients 101, 102 can include input/output devices,a central processing unit (“CPU”), a data storage device, and a networkdevice.

Typical input/output devices include keyboards, mice, displays,microphones, speakers, disk drives, CD-ROM drives, and flash drives.Other types of input/output devices can also be used.

Computer readable media, such as the data storage device, provides fordata retention. By way of example, computer readable media can includecomputer storage media and communication media. Computer storage mediaincludes physical volatile and nonvolatile, removable and non-removablemedia implemented in any method or technology for storage of informationsuch as computer readable instructions, data structures, program modulesor other data. Communication media typically embodies computer readableinstructions, data structures, program modules or other data in amodulated data signal such as a carrier wave or other transportmechanism and includes any information delivery media. The term“modulated data signal” means a signal that has one or more of itscharacteristics set or changed in such a manner as to encode informationin the signal.

Among the plurality of information stored on the data storage device isa client operating system (“OS”) and client applications. The client OSis a program that manages the hardware and software resources of theclient system. The client applications utilize the resources of theclients 101, 102 to directly perform tasks specified by the user. Forexample, the clients 101, 102 include one or more software applications,such as word processing programs, that are used to create and editdocument files. One example of such an application is Microsoft Wordfrom Microsoft Corporation of Redmond, Wash. Other examples of suchapplications are also applicable.

The network device enables the clients 101, 102 to send and receive datato/from the server 104 through a network such as a LAN or the Internet.Other configurations for the clients 101, 102 are possible.

The document server 104 is a file server that is accessible through anetwork. The document server 104 stores a plurality of files. Thesefiles can include both software applications and documents, as describedfurther herein. The document server 104 controls access to the documentsstored by the server 104.

In example embodiments, the document server 104 can be located within anorganization or can be part of an Internet-based shared document system.An example Internet-based shared document system is a SHAREPOINT® teamservices portal server services provided by Microsoft Corporation. Anexample shared document server is Microsoft Office SharePoint Server2007 provided by Microsoft Corporation. Other configurations can beused.

FIG. 2 shows an example document 200 that is rendered by a wordprocessing application 201 on example client 101.

In the example shown, the document 200 is organized into a plurality ofsections, designated as sections 202 through 212, respectively. Asection corresponds to an editable piece of a document. Typically, asection can be any subpart of a document, for example paragraphs,headings, drawings, tables, etc. A document may contain only onesection, for example a table or a single paragraph or sentence.

Alongside each section of the example document 200 are example usercontrols 222-232 that display the names of users who are currentlycoauthoring the section. The example document 200 also includes exampleaccess controls 242-252 that display the access permissions of each userfor the document section and example action controls 282-292 that permitthe user to take one or more specific actions for the document section.The specific actions may include assigning the document section toanother user, marking the document section reviewed, marking thedocument section completed, etc. In addition, the example document 200also includes example dynamic controls 262-272 that define rules fordynamically changing the access permissions for a section of thedocument. Other functionality for the controls is possible. The controlsmay include text boxes, list boxes, pull-down list boxes, icons or anyother user interface control types that may be appropriate.

In the example shown, the user controls 222-232 list the names of theuser or users who are currently editing the note section 202-212 of thedocuments. For example, if user A and user B are currently editingsection 202 of the document, the names of user A and user B are listedin the user control 222 so that everyone that has the document 200 opencan see that user A and user B are currently editing the section 202. Auser is considered to be editing a document section when the user makeschanges to the document section, for example by typing in the documentsection.

The access permissions of the access controls 242-252 indicate theextent to which a user may edit a section of the document 200. Exampleuser access permissions include full control, read/write, review only,comment only, read only and no access. Other user access permissions maybe possible.

In example embodiments, the names of all users with any level of accesspermission to the document section are displayed via user controls222-232. In example embodiments, the names of users with read onlyaccess may not be displayed, for example if the list of such users islong.

When a user is assigned full control, the user has full read/writeaccess to the section of the document and, in addition, the user can useany aspect of the user interface. For example, with full control, theuser can change the formatting of the document. When a user hasread/write control, the user has read-write permission to a section ofthe document, but cannot make formatting changes. With review onlypermission, a user can make changes to the document that are tracked viaa technology like Track Changes in Microsoft Word. With comment onlypermission, the user can insert comments to a section of the documentbut cannot alter the text within the section of the document. With readonly permission, the user can view the section of the document butcannot make any changes to it and cannot insert any comments.

With no access permission, certain sections of a document may not beviewable to users. For example, there may be confidential information ina document that one or more users are not permitted to view. Therefore,when presented to a user, one or more sections of a document may beredacted to prevent a user from viewing it. This is illustrated byshaded sections 206 and 208 in FIG. 2, which have been defined as noaccess for some of the users. In some embodiments, confidential sectionsmay not be displayed at all to a user that is not permitted to viewthem. In example embodiments, sections of a document may be redacted ifa user is not permitted to edit them. For example, in a document thatincludes both engineering and financial sections, the financial sectionsmay be redacted when an engineer is viewing the document and theengineering sections may be redacted when a financial person is viewingthe document.

In example embodiments, user access permissions and rules may beassigned and edited by an owner of the document (i.e. the person orpersons having ownership permission for the document). This may be doneon a section by section basis or globally for the entire document. Theuser access permissions and rules are stored on a document server.

The user access permissions described can also be enforced withoutnetwork connectivity. Assigned user permissions to sections of adocument can be cached in the client's software application or storedwithin the document. In this way, the access permissions can be used ifthe client is disconnected from the network or working on the documentfrom a different computer.

The action controls 282-292 permit the user to take a specific actionregarding the document section. For example, the user may wish to obtainupdates to the document section from one or more other users that may beediting the document section or the user may wish to share updates thatthe user made to the document section with one or more other users.Other example actions that the user may make include sending an email toa user or instant messaging a user to find out status. Other actions arepossible.

The dynamic controls 262-272 are used to define rules that permit theaccess permissions for a section of the document to dynamically changewhen a user completes a task. For example, one or more users may bedesignated reviewers, but a user may not want the document to bereviewed until it is completed. In an example embodiment, when a usermarks a section of a document as complete, the access permission for areviewer dynamically changes from read/only to review only.

When a user opens and begins editing the document 200, the user can viewthe corresponding example coauthoring control 222-232 to determine whoelse is currently editing the various sections of the document.Typically, the user may know one or more other users and may want to seeany changes that the other users have made before the user makes anyadditional changes. The user can indicate via example action controls282-292 that the user wants to view the changes of one or more otherusers, and if those users have designated that their changes can beshared, the changes made by the one or more other users will bedisplayed on the document shown to the user.

In example embodiments, the user also has the flexibility to decide whento share edits with other users. When editing a document, the user maynot want to share changes until those changes are in a state with whichthe user feels comfortable. In one example embodiment as discussedabove, the user selects an example action control 282-292 to specify auser with which changes can be shared. In another example embodiment,when the user wishes to share changes with other users, the first userhighlights the section of the document to be shared and clicks exampleShare button 205 on the user interface. This notifies the documentserver 104 that changes to the document section document are to beshared. In example embodiments, clicking the example Share button 205may bring up a list of users with which the document section changes maybe shared. Other implementations are possible.

In addition to example Share button 205, the example user interface alsoincludes an example Save button 203 and an example Assign button 207.The example Save button 203 operates as a standard save button, allowingthe user to save changes into client or server memory. However, the saveoperation does not result in sharing updates with others. The exampleAssign button 207 permits the owner of the document to assign accesspermissions to other users.

FIG. 3 shows an example embodiment of a document 300 for structuredcoauthoring of an example document section 306. To the left of theexample document section 306 are example user controls 312, 318displaying the names of two users currently coauthoring the documentsection. In this example, the two users are Heidi Craig and TomAnderson. Associated with the users are example access controls 314, 320and example action controls 308, 316. For user Heidi Craig, the exampleaccess control 314 is shaded to indicate full access. For user TomAnderson, the example access control 320 has a different shading toindicate write access. In other embodiments color, shape of icon, text,etc. may be used to indicate access status.

The example action controls 308, 316 permit the user to select one ormore actions to be taken regarding the document section. In an exampleembodiment, when the user moves a mouse over an action control (forexample the action control 308 for Heidi Craig), a list of availableactions 307 is presented. In this example embodiment, if the userselects the example action 309 for obtaining updates, the user willobtain updates to the document section from Heidi Craig that Heidi hasdesignated for sharing. If the user selects the example action 311 toshare updates, the changes the user made to the document section will beshared with Heidi Craig. If the user selects example action 313, theuser can send an email to Heidi Craig. Moving the mouse over the exampleaction control 316 for user Tom Anderson provides the same set of actionoptions for Tom Anderson.

In another embodiment, the action control 308, 316 is a pull-down listbox that provides a list of choices for the user. Other embodiments foraction controls are possible.

Also shown in FIG. 3 is an example dynamic control 322. The exampledynamic control 322 allows the user to dynamically change accesspermissions to the document section and to specify conditional accesspermissions. In this example, the dynamic control 322 is a pull-downlist box. When expanded, the example dynamic control displays an examplelist of users 324 that have access permissions for the example documentsection 306. When one of the example users 324 is selected, the accesspermission for that user is shown. For example, if example user SaraWhite 326 is selected, the dynamic control 322 is further expanded toshown example access permission list 328. In example access permissionlist 328, example access permission 330 (No Access) is shaded,indicating that Sara White currently has no access to this documentsection. For this example, if access permission 330 is clicked, thedynamic control 322 is further expanded to provide a means todynamically change access permissions. A list of Until options 332 isdisplayed, providing the option of maintaining the current accesspermission until a specific action occurs. For example, the user mayselect the Section Shared option 334 to specify that the current NoAccess permission for Sara White is to be maintained until the documentsection is designated for sharing by the user. When the example SectionShared option 334 is clicked, the dynamic control 332 is furtherexpanded to provide an example list of Then options 336, indicatingaccess permissions that can be set once the Section Shared actionoccurs. In the example, the Comment Only option 338 is selected,indicating that the access permission for user Sara White willdynamically change from No Access to Comment Only when the documentsection is designated for sharing.

Referring now to FIG. 4, in an example embodiment, changes may bedisplayed above the document section so the user may see them beforemaking any additional edits, as shown in the example document 300. Inthe example document 300, the user, via action control 316, makes arequest to receive updates to document section 306 from Tom Anderson.The updates 406 are displayed above document section 306. The user mayobserve that Tom Anderson changed the last sentence in document section306 and may make additional changes to the document section as a result.

Other example embodiments for the selection and display of coauthoringchanges are possible. For example, the coauthoring changes may bedisplayed adjacent to the current section, below the current section orsimply incorporated into the current section. In example embodiments,deletions and additions may be shown by strikethroughs and underlining.

In example embodiments, the user can select the one or more other usersfor which changes are to be displayed. The user may also globally selectchanges from all other users. In example embodiments, the changes can bereceived on a per section basis or for the entire document.

FIG. 5 shows the example document server 104 in more detail. The exampledocument server 104 includes one or more documents 502, a documentpermissions module 504, a document update processing module 506, and adocument rendering module 508. An example document 502 is rendered to auser when a request is received from an application program on a clientto open the document.

The example document permissions module 504 stores the accesspermissions for each section of each document for each user. In someembodiments, the access permissions are stored within each document. Inother embodiments, the access permissions are stored separately fromeach document (for example on a server or in a database) and are linkedto the document. As noted above, different user access permissions caninclude full control, read/write, review only, comment only, read onlyand no access. Other user access permissions are possible.

The example document permissions module 504 also enforces accesspermissions without network connectivity. The document permissionsmodule 504 achieves this enforcement by caching the access permissionson the client. The access permissions are cached for the user and forall other users who have accessed the document. The document permissionsmodule 504 updates the client cache dynamically when the accesspermissions change. When the user goes offline, the client cache ischecked to determine the extent to which the user can edit sections ofthe document.

The example document update processing module 506 keeps track of allchanges saved to a document by users. The document update processingmodule 506 also keeps track of which of these changes are designated bya user to be shared with other users. Typically, a user saves changesmade to a document by clicking a button on the user interfacerepresenting saving. However, these saved changes are not made availableto other users until a user designates the changes to be shared. Inexample embodiments, a user can make such a designation by highlightingone or more sections of a document and clicking a button on the userinterface representing sharing. In other example embodiments, the usermay designate that a document section is to be shared via an actioncontrol button adjacent to the document section. The user may alsodesignate that the entire document is to be shared. The use of buttonsrepresenting saving and sharing are examples only. Other implementationsare possible.

The example document update processing module 506 also processesrequests from a user to obtain changes made to the document from otherusers. The user requests may be made for each document section via anaction control or they may be made for the entire document. The exampledocument update processing module 506 determines which sections of thedocument can be updated and provides the updated changes to the exampledocument rendering module 508. The user requests are manually generatedso that the user can be in control of when the document is updated. Thisprevents the situation where a document section is updated while a useris editing it, possibly overriding changes the user made.

The example document rendering module 508 renders the document fordisplay to a user on a client. The document rendering module may usestandard user interface controls such as text boxes, list boxes andpull-down list boxes to display user access permissions for each sectionof the document and to display the names of users accessing sections ofthe document. In alternate embodiments custom designed controls may beused. User interface controls may also be used to define rules for eachsection of the document that are used to dynamically change accesspermissions depending on the user operation being performed.

The example document rendering module 508 also incorporates any sharedupdates from users into the document. These are updates made by usersthat were saved at the document server 104 and designated to be sharedwith other users. The updates may include edited changes to sections ofthe document, tracked review changes or comments. The example documentrendering module 508 typically renders text edits above the section ofthe document in which the edits were made so that the current user caneasily see them. Comments are typically rendered adjacent to sections ofthe document. However, in example embodiments, the updates may bepositioned differently.

FIG. 6 shows an example flowchart for a method 600 for coauthoring adocument. At operation 602, a user opens a document on a client. Thedocument, obtained from a document server, is organized into sections.Access permissions for the user are displayed on one or more sections ofthe document. In addition, the names of other users are displayed on thedocument, typically adjacent to the sections of the document they areaccessing.

At operation 604, the user performs operations consistent with theaccess permissions for a section. For example, if the user has fullcontrol for a section, the user can make full edits to a section of adocument, including changing formatting for the section. By contrast, ifa the user has comment only access, the user can only insert commentsfor a section of the document but can not edit any text in the section.

When the user has completed the operation appropriate to the accesspermission for a section, the user may wish to share the changes made toone or more sections of the document with other users. At operation 606,the user identifies the updates to the document that can be shared. Forexample, the user may highlight the sections that can be shared. Inanother example, the user can choose to share all updates.

At operation 608, the user notifies the document server that theidentified updates are available for sharing. This can be done, forexample, by clicking a button on the user interface representingsharing. As another example, the user may click a button indicating thatall changes made to the document are to be shared. Other ways todesignate sections to be shared and to notify the document server arepossible.

As the user is editing the document, the names of other users who arealso editing the document are displayed for each section of thedocument. If the user wishes to view the edits from one or more otherusers, the user identifies the one or more other users at operation 610.For example, the user may highlight the name of another user or doubleclick on the name of another user. Other implementation methods arepossible.

At operation 612, the updates from the identified other users areobtained and displayed on the document. The updates are typicallydisplayed above the section the user is editing along with the name ofthe other user. Other implementations are possible.

FIG. 7 shows an example flowchart for a method 700 for coordinating thecoauthoring of a document at a document server. At operation 702, theuser access permissions for each section of a document that are storedin the document server. At operation 704, the names of users currentlycoauthoring the document are stored at the document server.

At operation 706, the contents of the document, the user accesspermissions for each section of the document and the names of userscoauthoring sections of the document are used to render the document fordisplay to a user on a client. The user access permissions and the namesof users coauthoring sections of the document are typically displayedusing standard user interface controls such as text boxes, list boxes orpull-down list boxes. Other implementations are possible.

As users make changes to the document, those changes are stored in thedocument server at operation 708. However, the changes are not availablefor sharing until designated as such by a user who made the changes.

When a user determines that changes to the document are available forsharing, at operation 710 the document server receives a notificationfrom the client that identifies the updates to be shared and to makethose updates available to other users who may request them.

At operation 712, the document server receives a request from a user forupdates to the document made by one or more other users. The document isthen rendered at operation 714 to incorporate the shared changesrequested.

Although the subject matter has been described in language specific tostructural features and/or methodological acts, it is to be understoodthat the subject matter defined in the appended claims is notnecessarily limited to the specific features or acts described above.Rather, the specific features and acts described above are disclosed asexample forms of implementing the claims.

What is claimed is:
 1. A method executable on a computer system forco-authoring a document by a plurality of users, the computer systemhaving at least one data storage device communicatively coupled to atleast one processing unit, the method comprising: accessing thedocument, wherein the document is organized into a plurality ofsections; receiving first user access permissions associated with afirst section of the plurality of sections of the document, wherein thefirst user access permissions define an extent to which a first user ofthe plurality of users can access the first section of the plurality ofsections of the document; displaying a control adjacent to each sectionof the document, wherein the control for a given section is selectablefor setting one or more customized rules for changing one or more useraccess permissions associated with the given section of the document; inresponse to a selection of the control adjacent to the first section,setting customized rules for changing the first user access permissionsfor the first section upon satisfaction of a condition; determining thatthe condition has been satisfied; and in response to the determination,changing the first user access permissions for the first section inaccordance with the one or more customized rules.
 2. The method of claim1, wherein the first user access permissions include a level of accessselected from the group consisting of: full control, read/write, reviewonly, comment only, read only, and no access.
 3. The method of claim 1,further comprising: receiving second user access permissions associatedwith the first section of the plurality of sections of the document,wherein the second user access permissions define an extent to which asecond user of the plurality of users can access the first section ofthe plurality of sections of the document.
 4. The method of claim 3,further comprising: receiving updates to the first section of thedocument, wherein the updates are made to the first section according tothe second user access permissions.
 5. The method according to claim 4,wherein after updates are received to the first section of the document,the updates are not available to the first user until the second usersends a request to share the updates with the first user.
 6. The methodaccording to claim 5, further comprising: receiving a request from thefirst user to receive the updates; determining that the request to sharethe updates by the second user was received; and displaying the updatesto the first user.
 7. The method of claim 1, further comprising:receiving changes to the first user access permissions associated withthe first section of the document, wherein the changed first user accesspermissions define a different extent to which the first user can accessthe first section of the document.